/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package auctions;

/**
 *
 * @author hangsu
 * 
 * This interface should be implemented for each of the three settings for HW4.
 * - S2PSB_ScheduleAgent: simultaneous 2nd-price sealed-bid auction
 * - SAA_ScheduleAgent: simultaneous ascending auction
 * - Se2PSB_ScheduleAgent: sequential 2nd-price sealed-bid auction
 *  
 */
public interface ScheduleAgent {
    
    /*
     * Universal method for different auction type, negative if not bid.
     * Assume ASK==BID+1, no ask price is provided even for ascending auction.
     */
    public double getBid();
    
    /*
     * Call this after each auction: report the result of last auction.
     */
    public void reportResult(AuctionResult lastAuctionResult);
    
    /*
     * For ascending auction: report the result of last round or start status
     */
    public void updateStatus(AuctionStatus lastBidStatus);
    
    /*
     * Get final result from the agent
     */
    public BidderResult getBidderResult();
    
    /*
     * Reset private information
     */
    public void resetValue(int needs, int ddl, double[] utils);
    
    /*
     * Clear bidder history
     */
    public void clear();
    
}
